#include "adatbazis.h"
#include <cstdlib>
#include <iostream>

extern std::vector<std::string> Vec_from_string(const std::string& string);

Adatbazis::Adatbazis(const std::string& s) : _nev(s)
{
	//_f.open(_nev.c_str());
	_f.open(_nev.c_str(), std::fstream::in | std::fstream::out | std::fstream::trunc);
	_tablak_szama = 0;
}

Adatbazis::~Adatbazis()
{
	for (int i = 0; i < _tablak.size(); ++i)
	{
		delete _tablak[i];
	}
	_f.close();
}

void Adatbazis::Letrehoz(const std::string& s)
{
	Tabla* a = new Tabla(s);
	_tablak.push_back(a);
	
	_f.close();
	_f.open(_nev.c_str(), std::fstream::in | std::fstream::out);
	
	std::string tablak;
	std::getline(_f, tablak);
	
	_f.close();
	_f.open(_nev.c_str(), std::fstream::in | std::fstream::out | std::fstream::trunc);
	
	_f << tablak << s << ";";
	_f.close();
	_f.open(_nev.c_str());
}

std::string Adatbazis::Lekerdezes()
{
	std::string s;
	for (int i = 0; i < _tablak.size(); ++i)
	{
		s += _tablak[i]->Nev();
		s += " ";
	}
	
	return s;
}

void Adatbazis::Torol(const std::string& s)
{
	int i = 0;
	bool l = false;
	while (!l && i <= _tablak.size())
	{
		l = _tablak[i]->Nev() == s;
		++i;
	}
	
	if (!l) throw NEM_LETEZO_TABLA_TORLESE;
	else _tablak.erase(_tablak.begin()+i-1);
	
	_f.close();
	_f.open(_nev.c_str(), std::fstream::in | std::fstream::out);
	
	std::string sor;

	std::getline(_f, sor);
	
	//_f.close();
	//_f.open(_nev.c_str(), std::fstream::out | std::fstream::trunc);
	
	std::vector<std::string> v = Vec_from_string(sor);
	v.erase(v.begin()+i-1);
	
	std::cout << "erase utan" << std::endl;
	
	std::string s2;
	for (int i = 0; i < v.size(); ++i)
	{
		s2 += v[i];
		s2 += ";";
	}
	
	_f.close();
	_f.open(_nev.c_str(), std::fstream::in | std::fstream::out | std::fstream::trunc);
	
	_f << s2;
	_f.close();
	_f.open(_nev.c_str());
}